//权限说明
enum Permission {
    Read = 1,   // 0001  可读
    Write = 2,  // 0010  可写
    Create = 4, // 0100  创建
    Delete = 8  // 1000  删除
}

// 1.结合或运算组合权限

let p:Permission = Permission.Read | Permission.Write;

// 2.判断是否拥有某个权限,利用且运算
/**
 * 
 * @param target 需要检测的目标值
 * @param per 是否含有该值
 * @returns 
 */
function hasPermission(target:Permission , per:Permission) {
    // 下面这段代码相当于，利用且运算得到，目标数据中与判断值中的相同二进制值
    return (target & per) === per
}

// 3.删除某个权限，可利用^ 运算
console.log(p ^ Permission.Write);

